package org.jsola.hr.service;

import org.jsola.approval.dto.IssuedApproFlowAddDTO;
import org.jsola.contract.dto.IssuedCategoryAddDTO;
import org.jsola.core.service.IService;
import org.jsola.hr.dao.ICompanyDAO;
import org.jsola.hr.dto.AddAdvancedConfigurationDTO;
import org.jsola.hr.entity.CompanyDO;
import org.jsola.user.core.TokenUser;

import java.util.List;


/**
 * 用工单位
 *
 * @author zhr
 */
public interface ICompanySueService extends IService<ICompanyDAO, CompanyDO> {

    /**
     * 下发工价/劳务费规则
     *
     * @param companyId                      用工单位模板下发情况
     * @param salaryCalculateRuleGroupIdList 工价/劳务费规则
     * @param tokenUser                      当前用户
     */

    void sueSalaryCalculateRuleGroup(AddAdvancedConfigurationDTO addAdvancedConfigurationDTO, List<String> salaryCalculateRuleGroupIdList, TokenUser tokenUser);

    /**
     * 下发合同模版列表
     *  @param addAdvancedConfigurationDTO 用工单位模板下发情况
     * @param categoryList                合同模版列表
     * @param isSeal
     * @param tokenUser                   当前用户
     */
    void sueCategory(AddAdvancedConfigurationDTO addAdvancedConfigurationDTO, List<IssuedCategoryAddDTO.Category> categoryList, Boolean isSeal, TokenUser tokenUser);

    /**
     * 下发月工资模板
     *
     * @param addAdvancedConfigurationDTO 用工单位模板下发情况
     * @param salaryTemplateIds           月工资模板
     * @param tokenUser                   当前用户
     */
    void sueSalaryTemplate(AddAdvancedConfigurationDTO addAdvancedConfigurationDTO, List<Long> salaryTemplateIds, TokenUser tokenUser);

    /**
     * 下发审批
     *
     * @param addAdvancedConfigurationDTO 用工单位模板下发情况
     * @param approFlowInforList          审批
     * @param tokenUser                   当前用户
     */
    void suedApproFlow(AddAdvancedConfigurationDTO addAdvancedConfigurationDTO, List<IssuedApproFlowAddDTO.ApproFlowInfor> approFlowInforList, TokenUser tokenUser);

    /**
     * 下发入职模板
     *
     * @param addAdvancedConfigurationDTO 用工单位模板下发情况
     * @param templateIds                 入职模板
     * @param tokenUser                   当前用户
     */
    void sueTemplate(AddAdvancedConfigurationDTO addAdvancedConfigurationDTO, List<String> templateIds, TokenUser tokenUser);

    /**
     * 下发参保方案
     *
     * @param addAdvancedConfigurationDTO 用工单位模板下发情况
     * @param socProgsIds                 参保方案
     * @param tokenUser                   当前用户
     */
    void suedSocProg(AddAdvancedConfigurationDTO addAdvancedConfigurationDTO, List<String> socProgsIds, TokenUser tokenUser);

    /**
     * 下发印章
     *
     * @param addAdvancedConfigurationDTO 用工单位模板下发情况
     * @param sealsIds                    印章
     * @param tokenUser                   当前用户
     */
    void suedSeal(AddAdvancedConfigurationDTO addAdvancedConfigurationDTO, List<Long> sealsIds, TokenUser tokenUser);


}


